package com.xuebusi.ribbon.consumer.service.impl;

import com.xuebusi.ribbon.consumer.entity.Product;
import com.xuebusi.ribbon.consumer.service.OrderService;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

@Service
public class OrderServiceImpl implements OrderService {
    @Resource
    private RestTemplate restTemplate;

    /**
     * 查询商品信息
     *
     * @param productId 商品id
     * @return
     */
    @Override
    public Product findProductById(Long productId) {
        // 由于在创建RestTemplate实例的时候已经使声明了@LoadBalanced注解
        // 下面可以直接使用服务名称调用远程微服务，不需要使用IP地址+端口来拼接URL
        // 例如下面URL中的provider-service就是注册到eureka注册中心的服务名称
        // 注意：使用ribbon实现负载均衡的时候，服务名称不能用下划线，换成中划线。
        String url = "http://provider-service/product/1";
        ResponseEntity<Product> responseEntity = restTemplate.getForEntity(url, Product.class);
        return responseEntity.getBody();
    }
}
